package br.com.gustavobhz.portalcolaborador.pages.usuario;

import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.hibernate.annotations.CommitAfter;
import org.apache.tapestry5.ioc.Messages;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.hibernate.Session;
import org.hibernate.exception.DataException;

import br.com.gustavobhz.portalcolaborador.dao.CrudServiceDAO;
import br.com.gustavobhz.portalcolaborador.entidade.GenericDAO;
import br.com.gustavobhz.portalcolaborador.entidade.Usuario;

public class AtualizarUsuario {
	
	@Inject
	private CrudServiceDAO crudDAO;
	
	@Inject
	private Session session;
	
	@Inject
	private Messages messages;

	@Persist("flash")
	private String message;
	
	private Usuario usuario = null;
	
	private long usuarioId = 0;
	
	private static final String MENSAGEM_SUCESSO = "sucesso";
	private static final String MENSAGEM_ERRO = "erro";
	
	void onActivate(long id) {
		usuario = crudDAO.find(Usuario.class, id);
		usuarioId = id;
	}
	
	//Formulário
	void onSuccess() {
		try {
	        gravar();
	        setMessage(messages.get(MENSAGEM_SUCESSO));
		} catch (DataException ex) {
			setMessage(messages.get(MENSAGEM_ERRO));
		}
	}
	
	@CommitAfter
	void gravar() {
        final GenericDAO dao = new GenericDAO(session, Usuario.class);
        dao.gravar(usuario);
	}
	
    //getters and setters
	public Messages getMessages() {
		return messages;
	}

	public void setMessages(Messages messages) {
		this.messages = messages;
	}
	
	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}
	
	long onPassivate() {
		return usuarioId;
	}
	
	public Usuario getUsuario() {
		return usuario;
	}
	
}